#pragma once

#ifdef GAMBLER_EXPORTS
#define GAMBLER_API __declspec(dllexport)
#else
#define GAMBLER_API __declspec(dllimport)
#endif

#include <string>

class GAMBLER_API Gambler {
public:
    Gambler();
    ~Gambler();

    // 赌徒买入
    int buy(const std::string& stock_code,  double price);

    // 赌徒卖出
    int sell(const std::string& stock_code,  double price);
    // 赌徒卖出
    int sell(const std::string& stock_code,  double price, size_t quantity);

    // 现在持有哪只股票
    std::string getCurrentStockCode();

    // 赢率
    double getWinRate();
    
private:
    // 上次买入的价格
    double last_buy_price;
    // 该买多少股   
    int buy_quantity;
    // 现在持有哪只股票
    std::string current_stock_code;
    // 买入次数
    int buy_count;
    // 赢次数
    int win_count;
    // 持仓:
    int total_quantity;
};

/**
 * 输了翻倍的算法:
 * 五年下来,个股的分析赚的比亏的多, 但为什么赌徒还是不赚钱?
 * 0.3的胜率的情况下, 连续输10次, 就需要一次买入102400手来对冲, 没有那么多钱, 就买不了, 之前的积累就亏了.
 * 连亏的情况下, 由于购买量翻倍, 会越亏越多
 */
